Amazon QuickSightを使用してCost and Usage Report(CUR)を可視化してみた
実行環境が古くなっていたため、ツール等アップデートしました。またAWS CloudShellでの実行を確認しました。Date: 2024-10-21
こんにちは。サービスグループの武田です。
先日のエントリでAWS Cost and Usage Report(CUR)をAthenaでクエリできるようにしてみました。
Cost and Usage Report(CUR)のマニフェストファイルを使用してAmazon Athenaのテーブルを作成する
ところで、AWSにはAmazon QuickSightというマネージドなBIサービスがあります。これを使えばCURの可視化も簡単なのでは?ということで実際にやってみました。
QuickSightを使用するのは今回がはじめてだったので、料金体系についても調べました。結論からいえば、「一人で」「1GB以下のデータ」であれば無料で使えるようです。詳しくはirbbbのエントリを参照ください。
QuickSightにインポートする準備
QuickSightを使い始める前に、少し下準備が必要です。QuickSightにデータをインポートする方法はいくつか選択肢があります。今回はAthenaをデータソースにしてみました。
出力されたCURからAthenaのテーブルを作成するには、前述したエントリと同様スクリプトを使用します。
TAKEDA-Takashi/athena-create-table-cur: S3に保存されているCURマニフェストファイルからAthenaテーブル作成用のDDLを出力する。
ただ、このスクリプトで作成したテーブルをデータソースにすると少し問題があります。それは料金情報など数値データであってもすべて文字列型となっているため、QuickSightにインポートした後うまく集計ができません。そのため型変換を済ませたAthenaのビューを使用します。具体的にはスクリプトを実行する際に-v
のオプションを付与してください。これでテーブルおよびビューが作成されます。
$ uv run main.py -m s3://cm-cur-123456789012/CUR/Hourly/cur_hourly/20191001-20191101/cur_hourly-Manifest.json athena -o s3://aws-athena-query-results-123456789012-ap-northeast-1 -v
QuickSightを使ってみた
それでは実際にQuickSightを使用していきます。私のアカウントではサインアップをしたことがなかったため、マネジメントコンソールからQuickSightにアクセスするとサインアップを求められました。[Sign up for QuickSight]を押下します。
次にプランを選択します。前述したように「一人で」「1GB以下のデータ」であればどちらのプランでも無料で試せます。好きなプランを選択してください。
QuickSight リージョンを東京にしたところ、UIも日本語に変わりました。アカウント名やメールアドレスは自分の環境に合わせて設定してください。
同じ画面の下部にパーミッションの設定があります。とりあえずチェックを全部抜いてしまいましたが、初期設定のまま で大丈夫でした。また後からでも変更はできますので、自由に選んで問題ありません(私は後でAthenaを許可しました)。
入力値に問題がなければサインアップ完了です。[Amazon QuickSight に移動する]を押下すると移動します。
QuickSightの画面に遷移したら、CURのデータをインポートしましょう。左上の[新しい分析]を押下します。
左上の[新しいデータセット]を押下します。
新規データソースの一覧から Athena を選択します。
データソース名の入力が求められます。好きな名前で結構ですが、今回はcur
としてみました。
Athenaのテーブル(とビュー)一覧が表示されます。前述したようにここでテーブルを選んでしまうとデータが文字列型となってしまい、数値の集計がうまくできません(やりようはあるかもですが)。そのため、型変換ができているビューを選択します。ここではv_cur_20191001_20191101
を選択しました。
インポートの確認画面です。[Visualize]を押下します。
しばらく待っているとインポートが完了します。今回は36318行でスキップは0件でした。
インポートが終われば後は好きに可視化してください。たとえばサービスごとに利用費の合計を出すなんてことも簡単にできます。
まとめ
実は最初、文字列のまま集計しようとして、なぜか合計値がQuickSightで出せないといった初歩的なところでつまずいていました。回り道はありましたが、最終的にはきちんとグラフが出せてよかったです。ぜひみなさんもCURを可視化して費用最適化などに利用してみてください。